/*
Copyright [2023] [fuwen_soft]
*/
package vip.xiaonuo.modular.xyethnic.service;

import cn.hutool.core.lang.tree.Tree;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import vip.xiaonuo.core.pojo.page.PageResult;
import vip.xiaonuo.modular.xyethnic.entity.XyEthnic;
import vip.xiaonuo.modular.xyethnic.form.*;
import vip.xiaonuo.modular.xyethnic.param.XyEthnicParam;
import vip.xiaonuo.modular.xyethnic.vo.*;
import vip.xiaonuo.modular.xylogy.entity.XyLogy;

import java.util.List;

/**
 * 族员service接口
 *
 * @author yanwei
 * @date 2023-05-05 15:44:28
 */
public interface XyEthnicService extends IService<XyEthnic> {

    /**
     * 查询族员
     *
     * @author yanwei
     * @date 2023-05-05 15:44:28
     */
    PageResult<XyEthnic> page(XyEthnicParam xyEthnicParam);

    /**
     * 族员列表
     *
     * @author yanwei
     * @date 2023-05-05 15:44:28
     */
    List<XyEthnic> list(XyEthnicParam xyEthnicParam);

    /**
     * 添加族员
     *
     * @author yanwei
     * @date 2023-05-05 15:44:28
     */
    void add(XyEthnicParam xyEthnicParam);

    /**
     * 删除族员
     *
     * @author yanwei
     * @date 2023-05-05 15:44:28
     */
    void delete(List<XyEthnicParam> xyEthnicParamList);

    /**
     * 编辑族员
     *
     * @author yanwei
     * @date 2023-05-05 15:44:28
     */
    void edit(XyEthnicParam xyEthnicParam);

    /**
     * 查看族员
     *
     * @author yanwei
     * @date 2023-05-05 15:44:28
     */
     XyEthnic detail(XyEthnicParam xyEthnicParam);

    /**
     * 导出族员
     *
     * @author yanwei
     * @date 2023-05-05 15:44:28
     */
     void export(XyEthnicParam xyEthnicParam);

    void initSource(XyLogy xyLogy, String userId);

    void saveEthnic(EthnicForm ethnicForm, String userId);

    void chageEthnic(EthnicEditForm ethnicEditForm, String userId);

    CountLogyVo countLogy(String id);

    List<XyLogy> thisUserLogy();

    List<LevelsLogyVo> logyLevels(EthnicTreeListForm ethnicTreeListForm, String userId);

    TreeLogyVo treeListData(EthnicTreeListForm ethnicTreeListForm, String userId);

    List<LineLevelsLogyVo> lineChildList(String logyId);

    void authEditChange(AuthEditEthnicForm authEditEthnicForm);

    void pleaseBindEthnic(String ethnicId);

    void bindEthnicChange(AuthEditEthnicsForm authEditEthnicForm);

    List<JSONObject> pdfOpenLineChildList(String logyId);

    List<ListEthnicVo> lineChildListOld(String logyId);

    List<Tree<Object>> treeListDataTree(EthnicTreeListForm ethnicTreeListForm, String userId);

    void chagePoiEthnic(Integer poi, String id);

    List<DictLevelStrVo> findLevelsSelect(String id);

    void upChagePoi(String upId, String id);

    void pleaseNewBindEthnic(String ethnicId,String userId);

    void del(String id);
}
